<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <script>
      // 面向过程开发 (OOP)
      // 面向对象是一种编程思想，使用对象时只关注对象提供的功能，不关注其内部细节

      // 面向对象开发 特点 ：封装 继承 多态
      //  对象是一个整体 
      // 对象的俩个特征：具有属性和方法
      // 属性： 描述物体 静态的信息
      // 方法：  描述物体 动态的特征
      // 属性： 长  宽  高  颜色   品牌  价格 品牌
      // 方法： 开关  模式  风速+  风速- 温度+  温度-
      let obj=new Object();
      obj.name="你好"
      // 1.单例模式
      let kongtiao={
          name:"格力",
          chang:"70",
          kuan:"70",
          gao:"180",
          color:"白色",
          price:3000,
          openClose(){},
          wenDu(){},
          mode(){},
          fengSu(){}
      }
      // 2. 工厂模式 
      // 设置对象动态属性  返回该对象
      function kongtiaoFac(obj){
          let kongtiao={
            name:obj.name,
            chang:obj.chang,
            kuan:obj.kuan,
            gao:obj.gao,
            color:obj.color,
            price:obj.price,
            openClose(){
              let x=0;
              if(x%2==0){
                  console.log(this.name,"开")
              }else{
                  console.log(this.name,"关")
              }
              x++
            },
            wenDu(){},
            mode(){},
            fengSu(){}
        }
        return kongtiao
      }
      let meidi=kongtiaoFac({
        name:"美的",
        chang:11,
        kuan:111,
        gao:232,
        color:"红色",
        price:"999"
      })
      meidi.openClose()
      // 构造函数(类)
      function Kongtiao(name,price) {
        this.name=name;
        this.price=price;
        this.open=function(){}
      }
      Kongtiao.prototype.close=function () {

      }
      let haier=new Kongtiao("海尔",2999)
  </script>
</body>
</html>